﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing;
using System.Windows.Forms;

namespace Gw2ToolNewSystem
{
    class Sifrele
    {
        //dictionary abi bi tane anahtarı olan bi liste yani string ismi olcak image resim olcak aynı db gibi düşün nasıl her verinin id sini yapıyoruz
        //buda öyle
        public static Dictionary<string, Image> resimListesi = new Dictionary<string, Image>();
        public static void Sirele()
        {
            BlowFish bf = new BlowFish("sasa");
            System.Windows.Forms.OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "All files (*.*)|*.*";
            openFileDialog1.Multiselect = true;
            DialogResult result = openFileDialog1.ShowDialog();
            if (result == System.Windows.Forms.DialogResult.OK)
            {
                string[] dosyalar = openFileDialog1.FileNames;
                MemoryStream ms = new MemoryStream();
                BinaryWriter BWrit = new BinaryWriter(ms);
                foreach (string dosya in dosyalar)
                {
                    FileInfo info = new FileInfo(dosya);

                    BWrit.Write(true);
                    BWrit.Write(info.Name.Length);
                    BWrit.Write(Encoding.ASCII.GetBytes(info.Name));

                    byte[] dbytes = File.ReadAllBytes(dosya);
                    BWrit.Write(dbytes.Length);
                    BWrit.Write(dbytes);
                }
                BWrit.Write(false);

                
                byte[] binarryArray = ms.ToArray();
                byte[] Sifrele = bf.Encrypt_ECB(binarryArray);
                File.Create(Environment.CurrentDirectory + "\\packet.dat").Close(); // hatalı bu abi Environment.CurrentDirectory bu sadece exe nin yerini veriyo
                File.WriteAllBytes(Environment.CurrentDirectory + "\\packet.dat",Sifrele);

            } 


            
           
        }

        public static void sifrecoz() 
        {
            try
            {
                byte[] sifredosya = File.ReadAllBytes(Environment.CurrentDirectory + "\\packet.dat");
                BlowFish bf = new BlowFish("sasa");

                byte[] cozuldu = bf.Decrypt_ECB(sifredosya);

                MemoryStream ms = new MemoryStream(cozuldu);
                BinaryReader BRead = new BinaryReader(ms);
                bool devam = false;

                while ((devam = BRead.ReadBoolean()) == true)
                {
                    int d_ismi_uzunlugu = BRead.ReadInt32();
                    string d_ismi = Encoding.ASCII.GetString(BRead.ReadBytes(d_ismi_uzunlugu));
                    //string okuma için ayar çekmem lazım abi, tek tek harf okunması lazım

                    int d_boyutu = BRead.ReadInt32();
                    byte[] d_icerik = BRead.ReadBytes(d_boyutu);

                    Image resim = Image.FromStream(new MemoryStream(d_icerik));

                    resimListesi.Add(d_ismi, resim);
                }
            }
            catch (Exception)
            {
                
            }

        }
    }
}
